Process for the recovery of data transmitted over a transmission path for digital data streams using decoding by cross-correlation of a data sequence coded by cyclic shifting and inversion

ABSTRACT

A process for recovering, at the reception end, data transmitted over a transmission path for digital data streams. A code-word generator for generating a binary code word producing a Dirac pulse is provided. The binary code word is cyclically shifted to create further binary code words. The binary code word and further binary code words are inverted to create still further binary code words. The data is coded, on the transmission end of the transmission path, with the binary code word, with the further binary code words, and with the still further binary code words. On the reception end of the transmission path, the data is recovered by cross-correlating the data and by utilizing the position of the main maximum of the cross-correlation functions. To increase the number of code words, a second code-word generator and a third codeword generator, having different generator polynomials, are used for coding binary code words, further binary code words, and still further binary code words, by cyclical shifting and inversion in a manner similar to that above. On the reception end of the transmission path, second and third cross-correlators are additionally used. The main maximum of each of the resulting three cross-correlation functions is detected and the data word transmitted is recovered based on a main maximum with a value above a predetermined value and from the position of this main maximum.

BACKGROUND OF THE INVENTION

The present invention relates to a process for recovering, at a reception end of a transmission path for digital data streams, data transmitted over the transmission path from a transmission end to the reception end.

In the present invention, various data are coded at the transmission end of the transmission path by means of a binary code word. The binary code word is generated by a code-word generator. The auto-correlation of the binary code word produces a Dirac Pulse. The various data at the transmission end of the transmission path are also coded with further binary code words produced by cyclically shifting the code word and by inverting the code word and further code words.

Further, in the present invention, the code word received is cross-correlated at the reception end of the transmission path by means of a cross-correlator to decode the code word. The relative position and the sign of the main maximum of the corresponding cross-correlation function is used to recover the data sent over the transmission path.

In a known process of this type ("telcom report" 14 (1991), No. 2, pages 104 to 107), a 2⁵ -m sequence is used as binary code word. This 2⁵ -m sequence has the property that the auto-correlation of this 2⁵ -m sequence produces an ideal Dirac impulse. From the 2⁵ -m sequence, further binary code words are produced by cyclically shifting the binary code word. These further binary code words are characterized by phases which differ from each other. In this way, 31 different data words can be coded on the transmission end, and thus 4-bit data words can be coded. 5-bit data words cannot be coded since only 31 code words are available. One embodiment of the known process, which constitutes an improvement with respect to the number of codable data words, uses inverted binary 2⁵ -m sequences on the transmission end in addition to the coding. In this way, coding a maximum of an additional 31 different data words is possible. As a whole, 5-bit data words can thus be transmitted and recovered on the reception end of a transmission path by cross-correlation, despite disturbances on the transmission path, if not more than 7 bit errors occur upon the transmission.

The object of the present invention is to develop the above process so that a comparatively large number of data present on the transmission end can be reliably recovered on the reception end.

SUMMARY OF THE INVENTION

To achieve the above mentioned object, the present invention provides that a second supply of code words is used on the transmission end of the transmnission path, a second code word being generated by a second code-word generator. The auto-correlation of the second code word produces a Dirac pulse. Further second binary code words are produced by cyclically shifting the second code word and by inverting the second code word and further second code words to produce second inverse code words.

The second code-word generator can be defined by a generator polynomial of the same degree as the code-word generator.

The present invention further provides that a number of data are coded with data polynomials of the seventh order such that the code words of the two code-word generators are associated with data polynomials formed therefrom having, in each case, the five lowest binary places of tile seven order data polynomial as a function of two combinations of values of the two highest binary places of the seven data polynomial.

A further number of data are coded with data polynomials of the seventh order such that the inverse code words of the two code-word generators are associated with data polynomials formed therefrom having the five lowest binary places of the seven order data polynomial as a function of two further combinations of values of the two highest binary places of the seven order data polynomial. Further, an additional number of data are coded with data polynomials of the seventh degree such that code words of an additional code-word supply are associated with data polynomials which have been formed therefrom having zero at the five lowest binary places of the seven order data polynomial as a function of four combinations of values of the two highest binary places of the seven order data polynomial. The additional code-word supply is produced by a third code-word generator which corresponds to the two other code-word generators with respect to the degree of its generator polynomial and with respect to its code words.

The present invention provides that three cross-correlation functions are formed on the reception end of the transmission path by means of a cross-correlator, a second cross-correlator and a third cross-correlator, each having different correlation references. The height of the amounts of the main maxima of the cross-correlation functions are examined. If a height of the amount of a main maximum lies above a predetermined value, its relative position is determined and the datum transmitted in each case is recovered therefrom, considering also the sign of the corresponding main maximum.

One essential advantage of the process of the present invention is that more than twice as many code words are made available at the transmission end than in the known process. The number of bit errors must not exceed 5 to assure the dependable recovery of the data sent on the transmission end onto the transmission path on the reception end by cross-correlation.

In the process of the present invention, the code words of the second code supply can be formed in different manners. For example, four different code words produced by cyclically shifting the binary code word of the second code-word generator can be used. However, using two code words of the second code supply and forming the further code words therefrom by inversion is particularly advantageous.

As is also the case in the known process described above, the height of the main maximum of the cross-correlation functions can be advantageously utilized as a measure for the number of bit errors.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an embodiment of a shift register suitable for producing a code word for the process of the present invention.

FIG. 2 shows a binary code word.

FIG. 3 shows further code words obtainable by cyclically shifting of the binary code word of FIG. 2.

FIG. 4 shows an embodiment of a bipolar coder.

FIG. 5 is a table showing coding or decoding.

FIG. 6 is an embodiment of an arrangement for implementing the process of the present invention.

FIG. 7 shows a cross-correlation function.

FIG. 8 shows three cross-correlation functions.

DETAILED DESCRIPTION

FIG. 1 shows a shift register 1 which contains 5 stages, 2, 3, 4, 5 and 6, each stage being a D flip-flop in the embodiment shown. The shift register 1 includes a feedback coupling from the output of stage 6 to an exclusive-OR gate 7 arranged between stages 3 and 4 and to another exclusive-OR gate 8 arranged in front of the stage 2. This feedback coupling can be described by a generator polynomial G_(KKF) (x):

    G.sub.KKF (x)=x.sup.0 +x.sup.2 +x.sup.5 =x.sup.5 +x.sup.2 +1(1)

This generator polynomial G_(KKF) (x) is an "irreducible" polynomial of order g=5. The period of a 2⁵ -m sequence which can be produced with the generator polynomial is 2^(g) -1=31.

An input 9 of the shift register 1 can be provided with an input sequence E(x). A binary output sequence A(x) is provided at an output 10. The output signal A(x) is described with the input signal E(x) and the generator polynomial G_(KKF) (x) by

    A(x)=E(x)/G.sub.KKF (x)                                    (2)

The first 31 values of the output signal A(x) in the case of a stimulant with an input sequence E(x)=x³¹, which is a 100 00 sequence, is determined by the polynomial division ##EQU1## the result of which is identical to the sequence of numbers c_(O) (n) of 2⁵ -m sequency:

    C.sub.O (n)={0000100101100111110001101110101}              (4)

the division remainder R(x), which furthermore is identical to the content I(x) of the five stages 2 to 6 after 31 cycles, indicates the periodic behavior of the 2⁵ -m sequence generator. This sequence of numbers c_(O) (n) is used, as will be further described below, as a code word c_(O) (n) in the process of the invention.

If x³¹ +1 is selected as input signal, there is obtained ##EQU2## as output signal the polynomial H_(KKF) (x) which is perpendicular to G_(KKF) (x) and which represents only one period of the 2⁵ -m sequence and is thus the polynomial representation of c_(O) (n).

In the customary representation, the output signal of the shift register can be obtained from the table in FIG. 2, which has been compiled considering the fact that the contents of the individual stages 2 to 6 of the shift register of FIG. 1 can be described by the polynomial I(x), namely:

    I(x)=x.sup.4 ·i.sub.5 +x.sup.3 ·i.sub.4 +x.sup.2 ·i.sub.3 +x.sup.1 ·i.sub.2 +x.sup.0 ·i.sub.1(6)

or, in general, by the relationship (7)

    x.sup.i mod G.sub.KKF (x),                                 (7)

if a "1" is entered for i=0 in the first stage 2 and E(x)=0. As from x³¹, the conditions in the individual stages are repeated based on the period of 31 of the 2⁵ -m sequence. The content i₅ of the register 6 indicates the 2⁵ -m sequence or c_(O) (n) as binary sequence of numbers. If the code word c_(O) (n) is shifted cyclically in accordance with equation (4) or in accordance with equation (5), one then receives 31 different code words C(x) with respect to their phase s, as can be noted from FIG. 3. These different code words C(x) can be described by the following equation (8):

    C.sub.s (x)= x.sup.s.H.sub.KKF (x)!mod(x.sup.31 +1)        (8)

These code words have a length of 31 and make 31 different phase positions "s" of the 2⁵ -m sequence possible, so that in this way 31 different codes words are available.

By way of further explanation of equation (8), cyclic codes generally have, as characteristic, an irreducible generator polynomial G(x) with the degree g. Code words C(x) are generally now produced such that the so-called cyclic supplementation R(x) is appended to a data word D(x), so that the code-word polynomial C(x) is divisible by G(x) without remainder. For this purpose, D(x) is first multiplied by x^(g) and R(x) is then obtained by the division of the product D(x).x^(g) by G(x). R(x) has the degree g-1 and is thus precisely g places long. The code words obtained are described by

    C(x)=x.sup.g.D(x)+R(x)                                     (9)

this code word is then divisible without remainder by G(x). We therefore have ##EQU3## from which we obtain ##EQU4## The cyclic supplementation can now be obtained by inserting a data value for D(x) in equation (12) and dividing it by G(x). The result can then be separated into the result coefficient E(x) and the remainder R(x). Only the result for R(x) in equations (11) and (12) is essential for the calculation of the code word. E(x), on the other hand, is of no importance for the code word.

The store of a total of 31 code words can be doubled by inversion using a bipolar coder such as shown in FIG. 4, thereby obtaining 31 inverse code words. The code-word generator shown here has a feedback-coupled shift register 20 with the generator polynomial G₁ (x) with several stages 21 to 24 (a total of 26 stages) and exclusive-OR gates 25 and 26. Another exclusive-OR gate 27 is arranged on an output side of the shift register 20. An input 28 of the exclusive-OR gate 27 is directly coupled to the input of the exclusive-OR member 26 and is adapted to be connected, via a switch contact 29 in its "a" position, to the output of stage 24. In the "b" position of the switch contact 29, the one input 28 is acted on by the signals of the lower five places d₁ to d₅ of the data word D(x). The further input 30 of the further exclusive-OR member 27 is acted on by the signal of the highest (sixth) place of the data word D(x). The sixth place controls the inversion so that 62 different code words are available here if one furthermore starts from a 2⁵ -m sequence as example.

The 62 different code words forming a first code-word supply are thus obtained. Only half of the 62 code words are obtained by means of a code-word generator with the generator polynomial according to equation (5) while the other half of the 62 code words are obtained by inverting the first 31 code words to form inverse code words.

Based on the above, a second code-word supply can be produced by means of a second code-word generator having a generator polynomial G₂ (x) and by inverting the code words thus obtained. A third code-word supply can be obtained by means of a third code-word generator having a generator polynomial G₃ (x), which polynomials can be described by the following equations (13) and (14): ##EQU5##

In these equations (13) and (14), B₃ (x) and B₅ (x) represent the irreducible polynomials of fifth degree:

    B.sub.3 (x)=x.sup.5 +x.sup.4 +x.sup.3 +x.sup.2 +1          (15)

    B.sub.5 (x)=x.sup.5 +x.sup.4 +x.sup.2 +x+1                 (16)

In the table of FIG. 5, the code word supply C (x) produced with the bipolar code in accordance with FIG. 4 is described by indication of the generator polynomial G₁ (x) with reference to the inversion, where "b" indicates either "0" or "1". The second code-word supply is characterized in the table by indication of the generator polynomial G₂ (x), while G₃ (x), with the additions a to d, designates code words of the third code-word supply.

As can furthermore be noted in detail from FIG. 5, in this way data words D(x) can be coded as test data to be transmitted which represent 7-bit words with the binary places d₁ -d₇. In this connection, one proceeds such that a shortened data word D_(k) (x) of the fifth order is obtained, in each case, from the data words D(x) of the seventh order, it having the five lowest places of the data word D(x) of seventh order. Inverted or non-inverted code words of the one code-word supply and of the further code-word supply are associated with this shortened data word D_(k) (x) of fifth order as a function of the combination of values at places d₆ and d₇ of the data word D(x) of seventh order. In this way, a total of 124 different test data can be coded. Therefore, four additional code words are still lacking to be able to transmit test data of a length of 7 bits. These additional code words are obtained such that two noninverted code words of the generator polynomial G₃ (x) and the inverse code words from an additional code-word supply are used for this, again as a function of the combination of values d₆ and d₇. Thus a total of 128 code words are available, so that data words of a width of 7 bits can be transmitted.

As shown in FIG. 6, the code words formed by means of the above-described code-word generators with the generator polynomials G₁ (x), G₂ (x) and G₃ (x) are deposited in a coding device 40, which may be an addressable memory. In this connection, the code words produced in accordance with the generator polynomial G₁ (x) are present, for instance, at storage positions 41 the inverse code words of which are present on storage positions 42, and the code words produced in accordance with the generator polynomial G₂ (x) are present at storage positions 43, the inverse code words at storage positions 44 and the additional code words at storage positions 45 and their inverse code words at storage positions 46. Data words shown in block 47 which are to be coded are coded in the coding device 40 in a manner such as described above and transmitted as coded data (block 48) over a transmission path 49 where they are present as coded data (block 50). The coded data in block 50 includes any errors introduced by the transmission path 49. The coded data are fed to three cross-correlators 51, 52 and 53.

The cross-correlators 51 to 53 have different 2⁵ -m sequences as correlation references:

    M.sub.1 (x)=x.sup.26 +x.sup.26 mod G.sub.1 (x)             (17)

    M.sub.2 (x)=x.sup.26 +x.sup.26 mod G.sub.2 (x)             (18)

    M.sub.3 (x)=x.sup.26 +x.sup.26 mod G.sub.3 (x)             (19)

These correlation references are produced with the generator polynomials G₁ (x), G₂ (x) and G₃ (x). The cross-correlator 51 thus has the correlation reference M₁ (x), the cross-correlator 52 has the correlation reference M₂ (x), and the cross-correlator 53 has the correlation reference M₃ (x).

If the generator polynomial for the generated code word C'(x) is identical to the correlation reference, then a course of the function with a maximum of the height 31, as shown in FIG. 7, results for the cross-correlation function KKF(n) between the code word and the correlation reference. The value "n", at which the main maximum is detected in the cross-correlation function is associated unambiguously to the phase "s" of the code word received. Furthermore, all considerations with regard to the cross-correlation are made with a bipolar sequence of numbers in which, therefore, in view of equation (4), all "0" values are replaced by the value "-1". For the example, it was assumed that D(x) =0 and M₁ (x) is the correlation reference. The code words produced with a given generator polynomial produce an evaluatable maximum with the value 31 only in one of the three cross-correlators. In the two other cross-correlators only smaller maxima are produced, as can be noted from FIG. 8. In this connection, the unambiguity of the maximum in the plot of KKF.sub. 1 (n) is true also for falsified code words (i.e., code words including transmission errors). The value of the main maximum in KKF₁ (n) drops by the value 2 per bit error in the code word. At the same time the maximum values of the secondary maxima in KKF₂ (n) and KKF₃ (n) increase at most by 2 per bit error in the code word. To obtain a maximum error tolerance upon the correlative decoding, the recognition threshold for a maximum in the course of the function of the cross-correlation is set at

    |KKF(n)|≦21

This means that the code words transmitted can have up to 5 bit errors and still be recognized correctly.

From the position of the main maximum, from the polarity of the main maximum (positive or negative), and from the cross-correlator which provides the main maximum, the data word D(x) can be directly determined by means of a memory following the cross-correlators 51-53 (not shown), using the table shown in FIG. 5. In this connection, upon the occurrence of a positive main maximum in the cross-correlator 51 with the correlation reference M₁ (x) it is determined that C(x) has been generated with G₁ (x). In this way, in accordance with FIG. 5, places d₆ to d₁ of the data word D(x) are determined as 0. The position of the main maximum is now determined by the value of d₇.

In the same way as in the known process which was described at the beginning hereof, the number of bit errors can be determined in suitable manner by also evaluating the height of the main maximum in the process of the present invention.

Furthermore, the process of the present invention is not limited to the use of 2⁵ -m sequences as code words but that the Barker code, the Gordon Mills and Welsh sequence, and the Gold code can also be used.

The process of the present invention is not limited to the use of code words of a given length, a given number of cross-correlators, or a given number of generator polynomials. However, the number of cross-correlators must agree with the generator polynomials. 

I claim:
 1. A process for recovering, at a reception end, data transmitted over a transpission path for digital data steams from a transmission end to the reception end, in which various data are coded at the transmission end of the transmission path using a first code word generated by a first code-word generator, which can be described by a generator polynomial of degree five, an autocorrelation of said first code word producing a Dirac pulse and also using a first plurality of additional code words, including a first subset of code words generated by the first code-word generator by cyclic shifting of the first code word and including a first subset of inverted code words obtained by inverting the first subset of code words, and in which a cross-correlation of a code word received in each case is performed at the reception end of the transmission path for decoding by means of a first cross-correlator, using a relative position and a sign of a main maximum of a corresponding cross-correlation function for recovery of the data, said process comprising the steps of: using a second plurality of code words at the transmission end, a first additional code word of the second plurality of code words being generated by a first additional code-word generator, and an autocorrelation of the first additional code word produces a Dirac impulse, said second plurality of code words including a second subset of code words generated from the first additional code word by cyclic shifting of said first additional code word and also including a second subset of inverted code words obtained by inverting the second subset of code words,wherein the first additional code-word generator is describable by a generator polynomial (G₂ (x)) of a same degree as that of the first code-word generator,coding a first set of data (D(x)) with data polynomials of a seventh degree so that code words (G₁ (x) not inverted; G₂ (x) not inverted) from the first and first additional code-word generators are associated with data polynomials (D_(K) (x)) formed therefrom having in each case the five lowest binary places of a data polynomial (D(x)) of the seventh degree, as a function of two combinations of values of the two highest binary places (d₆, d₇) of the data polynomial (D(x)) of seventh degree, coding a second set of data (D(x)) with data polynomials of a seventh degree so that the first and second subset of inverted code words (G₁ (x) inverted; G₂ (x) inverted) from the first and first additional code-word generators, respectively, are associated with data polynomials (D(x)) formed therefrom having in each case the five lowest binary places of the data polynomial of seventh degree, as a function of two further combinations of values of the two highest binary places (d₆, d₇) of the data polynomial (D(x)) of seventh degree, and coding a third set of data with data polynomials of a seventh degree so that code words (G₃ (x); a, b, c, d) of an additional code-word supply are associated with data polynomials formed therefrom each having a null at the five lowest binary places (d₁ -d₅) of the data polynomial (D(x)) of seventh degree, as a function of four combinations of values of the two highest binary places d₆, d₇, of the data polynomial (D(x)) of seventh degree wherein the additional code-word supply is produced by a second additional code-word generator which agrees with the first and first additional code-word generators with respect to a degree of its generator polynomial (G₃ (x)) and its code words,forming three cross-correlation functions on the reception end by means of a first additional cross-correlator and a second additional corss-correlator having different correlation references (M₂ (x), M₃ (x)), which are examined as to a height of their main maxima, and if a height of a main maximum lies above a value predetermined in view of maximum fault tolerances in decoding, its relative position is determined and datum transmitted ine ach case is recovered therefrom with due consideration of a sign of the corresponding main maximum.
 2. The process according to claim 1, whereinfor coding of the third set of data (D(x)), in addition to code words (G₃ (x); a, c) of the additional code-word supply, code words (G₃ (x); b, d) formed by their inversion are used.
 3. A process according to claim 1, whereinthe height of the main maxima of the corss-correlation functions (KKf(n)) is utilized as measure of a number of bit errors.
 4. In a system having a transmission path for digital data streams, the transmission path having a transmission end and a reception end, a process for recovering, at the reception end, a data block transmitted over the transmission path, the process for recovering comprising steps of:a) generating a first group of binary code words comprising substeps of:i) generating, with a code word generator, a binary code word having an auto-correlation function that produces a Dirac pulse, wherein the code word generator can be described by an n-degree generator polynomial; ii) cyclically shifting the code word generated in step (a)(i) to generate further binary code words; iii) inverting the binary code word generated in step (a)(i) and the further binary code words generated in step (a)(ii) to generate still further binary code words; b) generating a second group of binary code words comprising sub-steps of:i) generating, with a second code word generator, a second binary code word having an auto-correlation function that produces a Dirac pulse, wherein the second code word generator can be described by an n degree generator polynomial; ii) cyclically shifting the second binary code word generated in step (b)(i) to generate further second binary code words; iii) inverting the second binary code word generated in step (b)(i) and the further second binary code words generated in step (a)(ii) to generate still further second binary code words; c) coding the data block, at the transmission end of the transmission path, by means of the binary code word generated in step (a)(i), the further binary code words generated in step (a)(ii), the still further binary code words generated in step (a)(iii), the second binary code word generated in step (b)(i), the further second binary code words generated in step (b)(ii), and the still further second binary code words generated in step (b)(iii), including sub-steps of:i) coding a number of data of the data block with seven degree data polynomials having five lowest binary places and two highest binary places such that the binary code word of the first code word generator and the second binary code word of the second binary code word generator are associated with data polynomials formed therefrom having, in each case, the five lowest binary places of the seven degree data polynomial, as a function of two combinations of values of the two highest binary places of the seven degree data polynomial; ii) coding a further number of data of the data block with seven degree data polynomials having five lowest binary places and two highest binary places such that the inverted code words and the second inverted code words are associated with data polynomials formed therefrom having, in each case, the five lowest binary places of the seven degree data polynomial, as a function of two further combinations of values of the two highest binary places of the seven degree data polynomial; and iii) coding an additional number of data with seven degree data polynomials having five lowest binary places and two highest binary places such that code words of an additional code word supply, being produced by a third n-degree code word generator, are associated with data polynomials formed therefrom, each having a null at the five lowest binary places of the seven degree data polynomial, as a function of four combinations of values of the two highest binary places of the seven degree polynomial; d) cross-correlating the code word at the reception end of the transmission path with a first cross-correlator having a first correlation reference to obtain a first main maximum, with a second cross-correlator having a second correlation reference to obtain a second main maximum, and with a third cross-correlator having a third correlation reference to obtain a third main maximum, each of the first, second, and third main maximums having a relative position and a sign; e) determining whether any of the first, second, and third main maximums exceed a predetermined value; and f) recovering the data block using the relative position and the sign of any of the first, second, and third main maximums which exceed the predetermined value.
 5. The process of claim 4 wherein the step of (c)(iii) further includes steps of:inverting the code words of the additional code word supply; and using the inverted code words for coding the additional number of data.
 6. The process of claim 5 further comprising a step of determining a number of bit errors based on a height of at least one of the first, second, and third main maximums. 